#ifndef __ADC_H
#define __ADC_H

#include "main.h"


#define ADC_DMA_BUF_SIZE        60
#define ADC_DMA_BUF_SIZE_HALF   ADC_DMA_BUF_SIZE/2                                  /* 每个ADC通道的 DMA采集次数 */
#define ADC_CH_NUM              5                                   /* ADC 通道数量 */
#define ADC_SUM                 ADC_CH_NUM * ADC_DMA_BUF_SIZE       /* 总采集buf 大小 */

/*
电机输入电压 PA3
温度 PC0
U相电流 PC1
V相电流 PC2
W相电流 PC3
*/
#define ADC_MOTOR_VOL_PORT GPIOA
#define ADC_MOTOR_VOL_PIN GPIO_PIN_3
#define ADC_MOTOR_VOL_GPIO_CLK_ENABLE() do { __HAL_RCC_GPIOA_CLK_ENABLE(); } while(0)

#define ADC_TEMP_PORT GPIOC
#define ADC_TEMP_PIN GPIO_PIN_0
#define ADC_TEMP_GPIO_CLK_ENABLE() do { __HAL_RCC_GPIOC_CLK_ENABLE(); } while(0)

#define ADC_U_CUR_PORT GPIOC
#define ADC_U_CUR_PIN GPIO_PIN_1
#define ADC_U_CUR_GPIO_CLK_ENABLE() do { __HAL_RCC_GPIOC_CLK_ENABLE(); } while(0)

#define ADC_V_CUR_PORT GPIOC
#define ADC_V_CUR_PIN GPIO_PIN_2
#define ADC_V_CUR_GPIO_CLK_ENABLE() do { __HAL_RCC_GPIOC_CLK_ENABLE(); } while(0)

#define ADC_W_CUR_PORT GPIOC
#define ADC_W_CUR_PIN GPIO_PIN_3
#define ADC_W_CUR_GPIO_CLK_ENABLE() do { __HAL_RCC_GPIOC_CLK_ENABLE(); } while(0)



#define ADC_MOTOR_VOL_CHX ADC_CHANNEL_4
#define ADC_TEMP_CHX ADC_CHANNEL_6
#define ADC_U_CUR_CHX ADC_CHANNEL_7
#define ADC_V_CUR_CHX ADC_CHANNEL_8
#define ADC_W_CUR_CHX ADC_CHANNEL_9

void adc_module_init(void);
void stop_adc(void);
void start_adc(void);
void show_adc_val(void);

// 全局变量extern声明
extern uint16_t g_adc_val[ADC_CH_NUM];

#endif  